﻿Imports System.Environment

Public Class frmMenu
    Private szSQL As String
    Private rs As ADODB.Recordset = Nothing

    Private Sub frmMenu_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        ' lire les paramètres de l'application
        ctDSN_AEM = My.Settings.ConnectionBD

        ' tester la connection avec la BD MySQL
        If IsConnectionOK() = False Then
            ' fin programme
            End
        End If

        ' Ouvrir le form Identification
        frmLogin.ShowDialog()
        If gUserCode = "___" Then
            ' fin programme
            End
        End If

        ' déterminer l'agence du client avec les 3 premiers lettres du nom
        szSQL = "CALL spGet_USER_AGENCE('" & nv(GetEnvironmentVariable("CLIENTNAME")) & "')"
        GetRecordset(ctDSN_AEM, szSQL, rs)
        If rs.RecordCount > 0 Then
            gUserAgence = rs.Fields("agence").Value
            gNomAgence = rs.Fields("nom").Value
        Else
            MsgBox("Agence non trouvé ! ", MsgBoxStyle.Critical)
            End
        End If
        rs.Close()

        ' afficher dans le menu les infos de l'utilisateur
        lb_UserNom.Text = gUserNom
        lb_NO_AGENCE.Text = gUserAgence
        ' Lire l'agence de l'utilisateur et affiche son nom
        gNomAgence = getLibelleByCode("P_AGENCES", gUserAgence)
        lb_NomAgence.Text = gNomAgence
        Me.Text = "AE MARIETTON - " & gNomAgence
        Me.TE_VERSION.Text = String.Format("Version {0}", My.Application.Info.Version.ToString)
        If ctDSN_AEM.Contains("bd_aem") = False Then
            lb_NO_AGENCE.ForeColor = Color.Red
        End If
        InitMenusTree()

    End Sub

    ' Tester la connection avec la base de données
    Private Function IsConnectionOK() As Boolean

        Dim conn As ADODB.Connection

        'enable error handler
        On Error GoTo ErrorHandler

        IsConnectionOK = False
        conn = New ADODB.Connection

        ' tester la connection avec MySQL
        conn.Open(ctDSN_AEM)
        conn.Close()
        ' conn.Dispose()
        IsConnectionOK = True
        Exit Function

ErrorHandler:
        MsgBox("Erreur lors de la connection à la BD : " & Err.Number & vbCrLf & Err.Description, MsgBoxStyle.Critical)
        End

    End Function

    Private Sub InitMenusTree()
        Dim nodeRub As TreeNode
        Dim noRub As Integer = 0
        Dim noSRub As Integer = 0

        TV_MENU.Nodes.Clear()
        TV_MENU.ImageList = Me.IM_MENU

        ' Lire les RUBRIQUES
        szSQL = "SELECT * FROM p_menu ORDER BY no_rub, no_sr"
        GetRecordset(ctDSN_AEM, szSQL, rs)

        Do While Not rs.EOF
            noRub = rs.Fields("no_rub").Value
            noSRub = rs.Fields("no_sr").Value
            ' est-ce une rubrique ?
            If noSRub = 0 Then
                nodeRub = New TreeNode(rs.Fields("rubrique").Value)
                nodeRub.ImageIndex = rs.Fields("no_image").Value
                TV_MENU.Nodes.Add(nodeRub)
            Else
                ' sous-rubrique
                nodeRub = New TreeNode(rs.Fields("rubrique").Value)
                nodeRub.ImageIndex = rs.Fields("no_image").Value
                nodeRub.Tag = rs.Fields("form").Value
                TV_MENU.Nodes(noRub - 1).Nodes.Add(nodeRub)
            End If
            rs.MoveNext()
        Loop
        ' Close the recordset AND connection.
        rs.Close()
        TV_MENU.ExpandAll()
        ' select la fiche élève
        TV_MENU.SelectedNode = TV_MENU.Nodes(0).Nodes(0)

    End Sub

    Private Sub TV_MENU_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TV_MENU.DoubleClick

        Dim nodeRub As TreeNode = TV_MENU.SelectedNode
        Select Case nodeRub.Tag
            Case "PRO_01"
                ' programme externe PROSPECT
                System.Diagnostics.Process.Start(My.Application.Info.DirectoryPath & "\AGENDA.EXE ", gUserCode)

            Case "ELE_01"
                frmEleves.show()
            Case "ELE_02"
                frmRelance.show()
            Case "PLA_01"                 ' Planning B
                gTypePlanning = "B"
                FrmPlanningB.show()
            Case "PLA_02"
                gTypePlanning = "A"     ' planning Moto
                FrmMoto.show()
            Case "PLA_03"
                gTypePlanning = "B"    ' stage B
                FrmStage.show()
            Case "PLA_04"
                gTypePlanning = "M"    ' Stage Moto
                FrmStage.show()
            Case "PLA_05"
                gTypePlanning = "C"    ' Permis à Points
                FrmStage.show()
            Case "PLA_06"
                gTypePlanning = "I"     ' Circuit
                FrmMoto.show()
            Case "PLA_07"
                gTypePlanning = "R"     ' RDV pedagogique
                FrmMoto.show()
            Case "PLA_08"
                gTypePlanning = "D"     ' Stage Codes
                FrmMoto.show()
            Case "PLA_09"
                gTypePlanning = "E"     ' Examen blanc
                FrmMoto.show()
            Case "PLA_10"                 ' Planning GL
                If gUserAgence <> 6 Then
                    MsgBox("Ce planning est réservé à l'agence de Vaugneray.", vbInformation)
                Else
                    gTypePlanning = "GL"
                    FrmPlanningB.show()
                End If
            Case "PLA_11"                 ' Planning 2R
                If gUserAgence <> 6 Then
                    MsgBox("Ce planning est réservé à l'agence de Vaugneray.", vbInformation)
                Else
                    gTypePlanning = "2R"
                    FrmPlanningB.show()
                End If

            Case "EXA_01"
                frmExamens.show()
            Case "EXA_02"
                frmAttentes.show()
            Case "CAI_02"
                frmJournalVentes.show()
            Case "CAI_01"
                frmJournalReglement.show()
        End Select

    End Sub

    Private Sub TV_MENU_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TV_MENU.KeyDown
        If e.KeyCode = Keys.Enter Then
            TV_MENU_DoubleClick(sender, e)
        End If
    End Sub

    Private Sub ChangerAgenceToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChangerAgenceToolStripMenuItem.Click

        ' utilisateur autorisé à exécuter cette fonction ?
        ' 12/12/2011 : autoriser les secrétaires 
        If IsUserAuthorised(7) = False Then
            Exit Sub
        End If
        ' cHanger d'agence
        frmChangeAgence.ShowDialog()
        ' Lire l'agence de l'utilisateur et affiche son nom
        gNomAgence = getLibelleByCode("P_AGENCES", gUserAgence)
        lb_NomAgence.Text = gNomAgence
        lb_NO_AGENCE.Text = gUserAgence
        Me.Text = "AE MARIETTON - " & lb_NomAgence.Text

    End Sub

    Private Sub QuitterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles QuitterToolStripMenuItem.Click
        ' Fermer AEM2010
        Application.Exit()
    End Sub

    Private Sub UtilisateursToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UtilisateursToolStripMenuItem.Click
        ' utilisateur autorisé à accéder ?
        If IsUserAuthorised(9) = False Then
            Exit Sub
        End If
        frmUsers.show()
    End Sub

    Private Sub TarifsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TarifsToolStripMenuItem.Click
        frmTarifs.show()
    End Sub

    Private Sub FormulesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FormulesToolStripMenuItem.Click
        frmFormules.show()
    End Sub

    Private Sub PermisToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PermisToolStripMenuItem.Click
        frmPermis.show()
    End Sub

    Private Sub SocietesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SocietesToolStripMenuItem.Click
        frmSocietes.show()
    End Sub

    Private Sub ElevesProvisoiresToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ElevesProvisoiresToolStripMenuItem.Click
        frmElevesProv.show()
    End Sub

    Private Sub TablesDeCodificationToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TablesDeCodificationToolStripMenuItem.Click
        frmTablesCodes.show()
    End Sub

    Private Sub AProposToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AProposToolStripMenuItem.Click
        frmAbout.show()
    End Sub

    Private Sub BalanceClientsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BalanceClientsToolStripMenuItem.Click
        ' utilisateur autorisé à exécuter cette fonction ?
        If IsUserAuthorised(9) = False Then
            Exit Sub
        End If
        frmBalanceClients.show()
    End Sub

    Private Sub ExporterVersComptaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExporterVersComptaToolStripMenuItem.Click
        ' utilisateur autorisé à exécuter cette fonction ?
        If IsUserAuthorised(9) = False Then
            Exit Sub
        End If
        frmExportCompta.show()
    End Sub

    Private Sub SolderContratAutoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SolderContratAutoToolStripMenuItem.Click
        ' utilisateur autorisé à exécuter cette fonction ?
        If IsUserAuthorised(9) = False Then
            Exit Sub
        End If
        ' Solder les contrats AUTO échus de plus d'un an et inactifs depuis 3 mois
        If MsgBox("Ce traitement va solder les contrats AUTO échus de plus de 12 mois." & vbCrLf & _
                  "Il va prendre plusieurs minutes. Voulez-vous continuer ?", _
                          MsgBoxStyle.YesNo, "SOLDER les CONTRATS AUTO ECHUS") = vbYes Then
            szSQL = "CALL spUpd_SOLDER_CONTRAT_B(" & gUserAgence & ",'" & gUserCode & "')"
            GetRecordset(ctDSN_AEM, szSQL, rs)
            If rs.RecordCount > 0 Then
                MsgBox(rs.Fields("NB").Value & " contrats ont été soldés !", MsgBoxStyle.Information)
            End If
        End If

    End Sub

    Private Sub ActualiserTarifPresentationsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ActualiserTarifPresentationsToolStripMenuItem.Click
        ' utilisateur autorisé à exécuter cette fonction ?
        If IsUserAuthorised(9) = False Then
            Exit Sub
        End If
        ' Réactualiser le tarifs des Heures et Présentations dans les compte client
        If MsgBox("Ce traitement va mettre à jour les prix des heures et des présentations dans les compte-clients." & vbCrLf & _
                  "Il va prendre plusieurs minutes. Voulez-vous continuer ?", _
                  MsgBoxStyle.YesNo, "REACTUALISATION des tarifs") = vbYes Then
            Me.Cursor = Cursors.WaitCursor
            szSQL = "CALL spUpd_PRESENTATIONS"
            ExecQuery(ctDSN_AEM, szSQL)
            Me.Cursor = Cursors.Default
        End If

    End Sub

    Private Sub ValiderExportComptaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ValiderExportComptaToolStripMenuItem.Click
        ' utilisateur autorisé à exécuter cette fonction ?
        If IsUserAuthorised(9) = False Then
            Exit Sub
        End If
        frmDernieresValidations.show()
    End Sub

    Private Sub SolderContratMotoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SolderContratMotoToolStripMenuItem.Click
        ' utilisateur autorisé à exécuter cette fonction ?
        If IsUserAuthorised(9) = False Then
            Exit Sub
        End If
        ' Solder les contrats MOTO échus de plus d'un an et inactifs depuis 3 mois
        If MsgBox("Ce traitement va solder les contrats MOTO échus de plus d'6 mois." & vbCrLf & _
                  "Il va prendre plusieurs minutes. Voulez-vous continuer ?", _
                          MsgBoxStyle.YesNo, "SOLDER les CONTRATS MOTO ECHUS") = vbYes Then
            szSQL = "CALL spUpd_SOLDER_CONTRAT_2R(" & gUserAgence & ",'" & gUserCode & "')"
            GetRecordset(ctDSN_AEM, szSQL, rs)
            If rs.RecordCount > 0 Then
                MsgBox(rs.Fields("NB").Value & " contrats ont été soldés !", MsgBoxStyle.Information)
            End If
        End If

    End Sub

    Private Sub ListeMoniteursToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListeMoniteursToolStripMenuItem.Click
        frmMoniteurs.show()
    End Sub

    Private Sub MoniteursParAgenceToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MoniteursParAgenceToolStripMenuItem.Click
        frmMoniteursAgence.show()
    End Sub

    Private Sub RécapDesActivitésToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RécapDesActivitésToolStripMenuItem.Click
        frmMoniteursRecap.show()
    End Sub

    Private Sub AgencesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AgencesToolStripMenuItem.Click
        FrmAgences.show()
    End Sub

    Private Sub StatistiquesStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles StatistiquesStripMenuItem.Click
        ' Editions des états statistiques
        FrmEditions.pRubrique = "STATISTIQUES"
        FrmEditions.show()
    End Sub

    Private Sub CloturerLesÉlèvesRéussisToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles CloturerLesÉlèvesRéussisToolStripMenuItem.Click
        ' utilisateur autorisé à exécuter cette fonction ?
        If IsUserAuthorised(9) = False Then
            Exit Sub
        End If
        ' Cloturer les fiches de plus d'un an 
        If MsgBox("Ce traitement va cloturer les dossiers dont les critères" & vbCrLf & _
                  "sont définis dans la procédure spUPD_ELEVES_CLOTURER." & vbCrLf & _
                  "Il est conseillé d'effectuer une SAUVEGARDE avant de lancer le tratement." & vbCrLf & _
                  "Voulez-vous continuer ?", _
                          MsgBoxStyle.YesNo, "CLOTURER les DOSSIERS") = vbYes Then
            szSQL = "CALL spUPD_ELEVES_CLOTURER()"
            ExecQuery(ctDSN_AEM, szSQL)
        End If
    End Sub

    
End Class
